package com.xk._04regEx;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @description: 正则表达式的应用实例
 * @author: xu
 * @date: 2022/11/2 10:12
 */
public class RegExp_10 {
    public static void main(String[] args) {
        test05();
    }

    /**
     * 应用实例1：验证汉字
     */
    private static void test01(){
        // 验证汉字
        String content = "韩顺平教育";
        String regStr = "^[\u0391-\uffe5]+$";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            System.out.println("满足格式"); // 韩顺平教育
        } else {
            System.out.println("不满足格式"); // 韩顺平edu教育
        }
    }

    /**
     * 应用实例2：验证邮政编码
     */
    private static void test02(){
        // 邮政编码
        // 要求：是 1-9 开头的一个6位数。比如：123890
        String content = "123890";
        String regStr = "^[1-9]\\d{5}$";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            System.out.println("满足格式"); // 123890
        } else {
            System.out.println("不满足格式"); // 012345
        }
    }

    /**
     * 应用实例3：验证QQ号码
     */
    private static void test03(){
        // 验证QQ号
        // 要求：是 1-9 开头的一个(5-10)位数。
        // 比如：12389、1349687
        String content = "12568974156";
        String regStr = "^[1-9]\\d{4,9}$";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            System.out.println("满足格式"); // 12389、1349687、864544317
        } else {
            System.out.println("不满足格式"); // 012345、1234、12568974156
        }
    }

    /**
     * 应用实例4：验证手机号码
     */
    private static void test04(){
        // 验证手机号码
        // 要求：是 13、14、15、18 开头的一个11位数。
        // 比如：13588889999
        String content = "13588889999";
        String regStr = "^1[3|4|5|8]\\d{9}$";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            System.out.println("满足格式"); // 13588889999
        } else {
            System.out.println("不满足格式"); // 12588889999、133588889999、1388889999
        }
    }

    /**
     * 应用实例5：验证复杂URL
     */
    private static void test05(){
        // 验证复杂URL
        // 思路：
        // 1. 先确定 url 的开始部分 https:// || http:// --> ^((http|https)://)?
        // 2. 然后通过 ([\w-]+\.)+[\w-]+ 匹配 www.bilibili.com
        // 3. (\/[\w-?=&/%#.]*)?$ 匹配 /video/BV1Eq4y1E79W?p=17&vd_source=6e6b2286ee9a603d7bdb2bc5ba80e449
        //String content = "https://www.bilibili.com/video/BV1Eq4y1E79W?p=17&vd_source=6e6b2286ee9a603d7bdb2bc5ba80e449";
        String content = ".wenku.baidu.com";
        String regStr = "^((http|https)://)?([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&/%#.]*)?$";
        /*
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            System.out.println("满足格式");
        } else {
            System.out.println("不满足格式");
        }
        */

        // 这里如果使用 Pattern.matches 整体匹配 比较简洁
        System.out.println(Pattern.matches(regStr, content) ? "匹配成功" : "匹配不成功");
    }
}
